package com.example.grape_effect.zzztest

import com.example.grape_effect.animation.TranslateAnimation
import com.example.grape_effect.effet.effect.*
import com.example.grape_effect.effet.filter.*
import com.example.grape_effect.effet.sticker.StickerEffect
import com.example.grape_effect.effet.transition.TranslateTransition
import com.example.grape_effect.gl.common.GLProgram

object ProgramDictionary {
    // 转场
    fun getAllTransitions(): ArrayList<GLProgram> {
        val transitionList = ArrayList<GLProgram>()
        transitionList.add(TranslateTransition(TranslateTransition.leftToRight))
        transitionList.add(TranslateTransition(TranslateTransition.rightToLeft))
        transitionList.add(TranslateTransition(TranslateTransition.topToBottom))
        transitionList.add(TranslateTransition(TranslateTransition.bottomToTop))
        return transitionList
    }

    // 动画
    fun getAllAnimations(): ArrayList<GLProgram> {
        val animationList = ArrayList<GLProgram>()
        animationList.add(TranslateAnimation(TranslateAnimation.leftToRight))
        animationList.add(TranslateAnimation(TranslateAnimation.rightToLeft))
        animationList.add(TranslateAnimation(TranslateAnimation.topToBottom))
        animationList.add(TranslateAnimation(TranslateAnimation.bottomToTop))
        return animationList
    }

    // 滤镜
    fun getAllFilters(): ArrayList<GLProgram> {
        val filterList = ArrayList<GLProgram>()
        filterList.add(GrayFilter())
        filterList.add(LutTableFilter())
        filterList.add(BilateralFilter())
        filterList.add(BrightFilter())
        filterList.add(CartoonFilter())
        filterList.add(DistortFilter())
        filterList.add(FaceBeautyFilter())
        filterList.add(MagnifierFilter())
        filterList.add(SharpenFilter())
        return filterList
    }

    // 特效
    fun getAllEffects(): ArrayList<GLProgram> {
        val effectList = ArrayList<GLProgram>()
        effectList.add(RadialBlurEffect())
        effectList.add(HeartBeatEffect())
        effectList.add(PointShakeEffect())
        effectList.add(WaveEffect())
        effectList.add(WhirlpoolEffect())
        effectList.add(StickerEffect())
        return effectList
    }
}